package com.sunwayhorizo.health.hl7.vocabulary;

import com.sunwayhorizo.health.hl7.datatypes.*;
import com.sunwayhorizo.health.hl7.datatypes.common.*;
import com.sunwayhorizo.health.hl7.rim.Organization;
import com.sunwayhorizo.health.hl7.rim.Person;

/**
 * 用于维护entityII,roleII,actII中identifierName属性
 * 表示唯一标识的类型，与rootId,extensionTxt共同确定ii的唯一性 用来区分同一实体（角色、动作）标识值相同时类型的不同
 * 
 * @author Obama
 * 
 */

public enum EntityIICode
{
    // person ii
    IDENTITYCARD("身份证", Person.class,"01"),
    HOUSEHOLDREGISTER("户口簿", Person.class,"02"),
    HONGKONGANDMACAOCARD("港澳居民身份证", Person.class,"03"),
    TAIWANCARD("台湾居民来往大陆通行证", Person.class,"04"),
    PASSPORT("护照", Person.class,"05"),
    OFFICERCERTIFICATE("军官证", Person.class,"06"),
    CIVILIANCADRESCARDS("文职干部证", Person.class,"07"),
    SOLDIERCARD("士兵证", Person.class,"08"),
    DRIVERSLICENSE("驾驶执照", Person.class,"09"),
    DISABILITYCERTIFICATE("残疾证", Person.class,"10"),
    BIRTHCERTIFICATE("出生证", Person.class,"12"),
    //Organization ii
    ORGANIZATION("机构编码",Organization.class),
    
    
    
    MEDICALTEAMCODE("医疗组编码",Organization.class,""),
    //Material
    DRUGCODE("药品编码"),
    
    
    TEMPCLASS("模板分类编码");
    
    
    
    ;

    private CS cs;
    private String description;
    private Class<?> clazz;
    private String conceptCode;

    public CS cs()
    {
        return cs;
    }


    private EntityIICode()
    {
        this.cs = InternalFactory.newCS(this.toString());
    }


    private EntityIICode(String description)
    {
        this.description = description;
        this.cs = InternalFactory.newCS(this.toString());
    }


    public String getDescription()
    {
        return description;
    }


    private EntityIICode(String description, Class<?> clazz)
    {
        this.cs = InternalFactory.newCS(this.toString());
        this.description = description;
        this.clazz = clazz;
    }
    
    private EntityIICode(String description, Class<?> clazz,String conceptCode)
    {
        this.cs = InternalFactory.newCS(this.toString());
        this.description = description;
        this.clazz = clazz;
        this.conceptCode=conceptCode;
    }


    public Class<?> getClazz()
    {
        return clazz;
    }


    public String getConceptCode()
    {
        return conceptCode;
    }

}
